smart client

桌面应用程序

smart client,是一种一个可扩展的能集成不同应用的桌面应用程序。可动态加载,即需即装。

定义
简而言之,Smart Client智能客户端就是这样一种一个可扩展的能集成不同应用的桌面应用程序:它可以无接触部署、即需即装、动态加载,XCopy即可运行而无须修改注册表,可以动态升级、自动更新,可以方便的经Web运行而不用担心防火墙问题并可以方便的离线运用,方便的连接WebServices的Windows应用程序。
主要特点
1.动态加载,即需即装。
应用程序的各个构件之间的相互调用并不采用直接引用的方式,而是采用动态加载,即需即装的方式,有效地降低了对系统资源的消耗。应用软件开发商可根据企业应用系统的公共接口进行开发,然后将应用组件发布在企业的服务器上,客户端应用程序将自动发现并加载该应用组件。
2.更松散的耦合
由于上面第一点所言构件之间的相互调用并不采用直接引用方式,这样系统实现的更松散的耦合,为应用程序升级更新提供了方便。
3.进一步的模块化
由于应用程序的松散耦合特性,使系统的进一步模块化成为可能,新功能、新特性的加入只需要开发出符合接口定义的新模块并添加连接即可。而无须修改重编译现有的程序。
4.零接触部署。
安装时只要将一个主程序文件下载到本地,直接运行即可,无须改变注册表或共享的系统组件,其他应用组件将在第一次运行时自动下载。
5.网络加载应用程序组件
Smart Client的应用程序可以很方便的从网络服务器加载应用程序,而且因为程序及加载是从80端口实现,故无须考虑防火墙问题,这样为企业系统的集中管理提供了方便。
6.自动更新
只需将新版本的程序发布在服务器上,由客户端自动发现最新版本的程序和应用组件,并自动下载和更新。
7.在线与离线均可使用的应用程序
Smart Client应用程序尽管使用网络加载程序集,但一旦加载之后,程序集便被缓存到了本地。当用户至少启动了一次应用程序后,其装配就被下载和缓存到本地内存中了,所以用户就可以离线运行你的智能客户端了(通过转换浏览器到离线工作状态),假设应用程序不需要永久访问Web services或一个共享的数据库就可以运行。
构建智能客户端的最大的好处就是可以离线使用。尽管业务之间的联系越来越紧密,但我们仍不能给企业应用程序提供始终连续的连接。离线式工作方式可以在你重新在线时,自动接收数据和应用程序更新,这种特征是人们很想得到的,但在.NET前,这是很难实现的。同胖客户端一样,智能客户端给客户端分布大量的处理,这就为服务器免除了它在一个基于Web的应用程序中需要承担的负荷。最后,智能客户端采取一种用户希望应用程序采取的工作方式——允许快速数据存取和管理,而不需要不必要的屏幕更新。
8.个性化用户界面
用户可根据喜好自行设置客户端应用程序,配置信息将被保存到服务器上。
9.与WebServices的完美集成
Smart Client应用程序可以与WebServices方便的集成应用,这样便可以轻松享受C/S应用程序的完美用户体验而不需担心防火墙等等的一系列问题。
优势
尽管有大量的广告,但瘦Web解决方案并没必要成为所有企业应用程序的未来。不要丢弃用WinForms来构建企业应用程序这种想法,因为企业应用需要集中的分布。下面的这张表格描述了Smart Client和瘦Web解决方案之间的对比:
表1 比较两者
通过将智能客户端的功能和web应用程序的功能进行比较,可以简化我们的决策过程。
四、Smart Client的工作模型
应用程序加载器用HTTP从Web服务器上的一个虚拟目录来访问和下载装配。下载后,装配被缓存起来,只有需要的时候才执行它们。
五、Smart Client的安全性问题
1.客户端的代码访问安全(CAS) 说到Web方式直接运行,就不能不谈到代码访问安全性(Code Access Security)问题,如果一个黑客能够说服或者诱使你下载一段代码,而你在很高的权限账户下运行它,那操作系统就对各种危害门户打开。这种情形就是导致著名的宣言“在最小权限下运行”的原因,每个人都应该注意这一点。 但是,.NET Framework提供了比这种单纯的基于身份的安全性更高级的功能。由CLR强制执行的CAS机制允许为代码(实际上是assembliy,.NET Framework中调度和保护的单位)指定基于属性的不同的可信度等级,例如数字证书或源站点或URL。在这种方式下,.NET Framework只允许已知的或受信的源代码执行。 为了让你的智能应用程序运转,你需要改变一些客户端的安全设置——实质上就是通知客户端运行时间相信你的应用程序的装配。一种方法就是将带有你的装配的站点添加到IE中可信任站点清单中,然后用安装在你的管理工具目录下的Microsoft .NET Framework Configuration工具来修改.NET Framework安全设置。打开Framework Configuration工具,右击Runtime Security Policy,然后选择Adjust Security。对于Trusted Sites中指定的所有站点,将信任级别调整到Full Trust。作为选择,你也可以用Framework Configuaration工具来修改安全策略,使它信任你的应用程序的个别装配。右击Runtime Security Policy,选择Trust Assembly。 2.服务器端的身份验证 这里的服务器端的身份验证,实际上就是WebServices的身份验证,虽然说从理论上Forms身份验证也是可行的,但是WebServices既然是一个A2A(Application To Application)的应用程序,那么还是尽量不要用这用更适合于人机交互的身份验证方式为好。 (a) Windows身份验证。 使用用户的Windows账号如域账号进行身份验证。 (b) .Net Passport身份验证 使用与用户相关联的.NET Passport账号进行身份验证。(c) 自定义身份验证 使用Soap来给Web服务传递账户信息是一个相对使用URL传递装户信息而言比较安全的方式,同时不必为每一个WebMethod传递证书(作为参数的一部份),如果仍然觉得不够安全则可以对Soap头进行加密,或者干脆使用Soap传递安全证书,这里只介绍使用Soap不加密传递用户名和密码进行身份验证的方式当一个服务请求发送到服务端,请求会被WebServiceAuthenticationModule截获,WebServiceAuthenticationModule就开始分析该请求的Soap头,从中解析出客户端发送的用户名和密码,并进行身份验证。如果身份验证通过,WebServiceAuthenticationModule便会给用户签发身份验证票;如果身份验证失败,WebServiceAuthenticationModule便会抛出一个消息为”Access Deny!”的SOAPException,随后服务端和客户端均可截获该异常并进行处理。
六、Smart Client的未来
Smart Client实际上是一个客户端表现层架构,通过抽象这些概念开发人员可以更好地理解现代软件开发的各个层次。它最适合的是.NET平台,而.NET则是微软的战略基础,相信微软在几年内,会有越来越多的应用构建在.NET之上。在未来的几年之内,.NET将成为更加主流的应用平台,作为建立在.NET基础之上的抽象的表现层架构,随着.NET平台的更加成熟,Smart Client也会有更多的用武之地。 VS.NET中最重要的后续产品—代号为“Whidbey”的Visual Studio 2005。VS2005除了在底层类库和IDE提供了更加强大的支持以外,还针对无接触部署引入了引人瞩目的“Click Once”技术。Click Once技术通过使用Smart Client简化 Web 应用程序的安装和升级,从而给开发人员提供了更好的部署更新应用解决方案。Click Once基本上具有UAB和OAB的所有优势,使许多编码工作只要通过简单地配置项目属性即可完成,同时,它还具有一些新增功能。它最大的特点在于代码访问的安全性(CAS),从而保证应用程序在一个更加安全的环境中完成部署和更新。Click Once是.NET运行库(CLR)中的一组功能与VS .NET中集成的design-time support(设计时支持)功能的组合。总之,使用该功能以及IDE工具,在部署、启动和更新应用程序方面具有很大的灵活性。通过Click Once可以极大地简化更新部署应用解决方案,同时也提供了更加强大的安全选项。 任何技术都是应用催生的,Smart Client也是如此。在经历了C/S、B/S之后,是否真正步入了Smart Client时代呢?结论为时尚早。相信在这场变革中,Smart Client将为更多企业应用系统的开发带来助力。
全国各地天气预报查询

上海市

  • 市辖区
  • 云南省

  • 临沧市
  • 云南省

  • 丽江市
  • 云南省

  • 保山市
  • 云南省

  • 大理白族自治州
  • 云南省

  • 德宏傣族景颇族自治州
  • 云南省

  • 怒江傈僳族自治州
  • 云南省

  • 文山壮族苗族自治州
  • 云南省

  • 昆明市
  • 云南省

  • 昭通市
  • 云南省

  • 普洱市
  • 云南省

  • 曲靖市
  • 云南省

  • 楚雄彝族自治州
  • 云南省

  • 玉溪市
  • 云南省

  • 红河哈尼族彝族自治州
  • 云南省

  • 西双版纳傣族自治州
  • 云南省

  • 迪庆藏族自治州
  • 内蒙古自治区

  • 乌兰察布市
  • 内蒙古自治区

  • 乌海市
  • 内蒙古自治区

  • 兴安盟
  • 内蒙古自治区

  • 包头市
  • 内蒙古自治区

  • 呼伦贝尔市
  • 内蒙古自治区

  • 呼和浩特市
  • 内蒙古自治区

  • 巴彦淖尔市
  • 内蒙古自治区

  • 赤峰市
  • 内蒙古自治区

  • 通辽市
  • 内蒙古自治区

  • 鄂尔多斯市
  • 内蒙古自治区

  • 锡林郭勒盟
  • 内蒙古自治区

  • 阿拉善盟
  • 北京市

  • 市辖区
  • 吉林省

  • 吉林市
  • 吉林省

  • 四平市
  • 吉林省

  • 延边朝鲜族自治州
  • 吉林省

  • 松原市
  • 吉林省

  • 白城市
  • 吉林省

  • 白山市
  • 吉林省

  • 辽源市
  • 吉林省

  • 通化市
  • 吉林省

  • 长春市
  • 四川省

  • 乐山市
  • 四川省

  • 内江市
  • 四川省

  • 凉山彝族自治州
  • 四川省

  • 南充市
  • 四川省

  • 宜宾市
  • 四川省

  • 巴中市
  • 四川省

  • 广元市
  • 四川省

  • 广安市
  • 四川省

  • 德阳市
  • 四川省

  • 成都市
  • 四川省

  • 攀枝花市
  • 四川省

  • 泸州市
  • 四川省

  • 甘孜藏族自治州
  • 四川省

  • 眉山市
  • 四川省

  • 绵阳市
  • 四川省

  • 自贡市
  • 四川省

  • 资阳市
  • 四川省

  • 达州市
  • 四川省

  • 遂宁市
  • 四川省

  • 阿坝藏族羌族自治州
  • 四川省

  • 雅安市
  • 天津市

  • 市辖区
  • 宁夏回族自治区

  • 中卫市
  • 宁夏回族自治区

  • 吴忠市
  • 宁夏回族自治区

  • 固原市
  • 宁夏回族自治区

  • 石嘴山市
  • 宁夏回族自治区

  • 银川市
  • 安徽省

  • 亳州市
  • 安徽省

  • 六安市
  • 安徽省

  • 合肥市
  • 安徽省

  • 安庆市
  • 安徽省

  • 宣城市
  • 安徽省

  • 宿州市
  • 安徽省

  • 池州市
  • 安徽省

  • 淮北市
  • 安徽省

  • 淮南市
  • 安徽省

  • 滁州市
  • 安徽省

  • 芜湖市
  • 安徽省

  • 蚌埠市
  • 安徽省

  • 铜陵市
  • 安徽省

  • 阜阳市
  • 安徽省

  • 马鞍山市
  • 安徽省

  • 黄山市
  • 山东省

  • 东营市
  • 山东省

  • 临沂市
  • 山东省

  • 威海市
  • 山东省

  • 德州市
  • 山东省

  • 日照市
  • 山东省

  • 枣庄市
  • 山东省

  • 泰安市
  • 山东省

  • 济南市
  • 山东省

  • 济宁市
  • 山东省

  • 淄博市
  • 山东省

  • 滨州市
  • 山东省

  • 潍坊市
  • 山东省

  • 烟台市
  • 山东省

  • 聊城市
  • 山东省

  • 菏泽市
  • 山东省

  • 青岛市
  • 山西省

  • 临汾市
  • 山西省

  • 吕梁市
  • 山西省

  • 大同市
  • 山西省

  • 太原市
  • 山西省

  • 忻州市
  • 山西省

  • 晋中市
  • 山西省

  • 晋城市
  • 山西省

  • 朔州市
  • 山西省

  • 运城市
  • 山西省

  • 长治市
  • 山西省

  • 阳泉市
  • 广东省

  • 东莞市
  • 广东省

  • 中山市
  • 广东省

  • 云浮市
  • 广东省

  • 佛山市
  • 广东省

  • 广州市
  • 广东省

  • 惠州市
  • 广东省

  • 揭阳市
  • 广东省

  • 梅州市
  • 广东省

  • 汕头市
  • 广东省

  • 汕尾市
  • 广东省

  • 江门市
  • 广东省

  • 河源市
  • 广东省

  • 深圳市
  • 广东省

  • 清远市
  • 广东省

  • 湛江市
  • 广东省

  • 潮州市
  • 广东省

  • 珠海市
  • 广东省

  • 肇庆市
  • 广东省

  • 茂名市
  • 广东省

  • 阳江市
  • 广东省

  • 韶关市
  • 广西壮族自治区

  • 北海市
  • 广西壮族自治区

  • 南宁市
  • 广西壮族自治区

  • 崇左市
  • 广西壮族自治区

  • 来宾市
  • 广西壮族自治区

  • 柳州市
  • 广西壮族自治区

  • 桂林市
  • 广西壮族自治区

  • 梧州市
  • 广西壮族自治区

  • 河池市
  • 广西壮族自治区

  • 玉林市
  • 广西壮族自治区

  • 百色市
  • 广西壮族自治区

  • 贵港市
  • 广西壮族自治区

  • 贺州市
  • 广西壮族自治区

  • 钦州市
  • 广西壮族自治区

  • 防城港市
  • 新疆维吾尔自治区

  • 乌鲁木齐市
  • 新疆维吾尔自治区

  • 伊犁哈萨克自治州
  • 新疆维吾尔自治区

  • 克孜勒苏柯尔克孜自治州
  • 新疆维吾尔自治区

  • 克拉玛依市
  • 新疆维吾尔自治区

  • 博尔塔拉蒙古自治州
  • 新疆维吾尔自治区

  • 吐鲁番市
  • 新疆维吾尔自治区

  • 和田地区
  • 新疆维吾尔自治区

  • 哈密市
  • 新疆维吾尔自治区

  • 喀什地区
  • 新疆维吾尔自治区

  • 塔城地区
  • 新疆维吾尔自治区

  • 巴音郭楞蒙古自治州
  • 新疆维吾尔自治区

  • 昌吉回族自治州
  • 新疆维吾尔自治区

  • 自治区直辖县级行政区划
  • 新疆维吾尔自治区

  • 阿克苏地区
  • 新疆维吾尔自治区

  • 阿勒泰地区
  • 江苏省

  • 南京市
  • 江苏省

  • 南通市
  • 江苏省

  • 宿迁市
  • 江苏省

  • 常州市
  • 江苏省

  • 徐州市
  • 江苏省

  • 扬州市
  • 江苏省

  • 无锡市
  • 江苏省

  • 泰州市
  • 江苏省

  • 淮安市
  • 江苏省

  • 盐城市
  • 江苏省

  • 苏州市
  • 江苏省

  • 连云港市
  • 江苏省

  • 镇江市
  • 江西省

  • 上饶市
  • 江西省

  • 九江市
  • 江西省

  • 南昌市
  • 江西省

  • 吉安市
  • 江西省

  • 宜春市
  • 江西省

  • 抚州市
  • 江西省

  • 新余市
  • 江西省

  • 景德镇市
  • 江西省

  • 萍乡市
  • 江西省

  • 赣州市
  • 江西省

  • 鹰潭市
  • 河北省

  • 保定市
  • 河北省

  • 唐山市
  • 河北省

  • 廊坊市
  • 河北省

  • 张家口市
  • 河北省

  • 承德市
  • 河北省

  • 沧州市
  • 河北省

  • 石家庄市
  • 河北省

  • 秦皇岛市
  • 河北省

  • 衡水市
  • 河北省

  • 邢台市
  • 河北省

  • 邯郸市
  • 河南省

  • 三门峡市
  • 河南省

  • 信阳市
  • 河南省

  • 南阳市
  • 河南省

  • 周口市
  • 河南省

  • 商丘市
  • 河南省

  • 安阳市
  • 河南省

  • 平顶山市
  • 河南省

  • 开封市
  • 河南省

  • 新乡市
  • 河南省

  • 洛阳市
  • 河南省

  • 漯河市
  • 河南省

  • 濮阳市
  • 河南省

  • 焦作市
  • 河南省

  • 省直辖县级行政区划
  • 河南省

  • 许昌市
  • 河南省

  • 郑州市
  • 河南省

  • 驻马店市
  • 河南省

  • 鹤壁市
  • 浙江省

  • 丽水市
  • 浙江省

  • 台州市
  • 浙江省

  • 嘉兴市
  • 浙江省

  • 宁波市
  • 浙江省

  • 杭州市
  • 浙江省

  • 温州市
  • 浙江省

  • 湖州市
  • 浙江省

  • 绍兴市
  • 浙江省

  • 舟山市
  • 浙江省

  • 衢州市
  • 浙江省

  • 金华市
  • 海南省

  • 三亚市
  • 海南省

  • 三沙市
  • 海南省

  • 儋州市
  • 海南省

  • 海口市
  • 海南省

  • 省直辖县级行政区划
  • 湖北省

  • 十堰市
  • 湖北省

  • 咸宁市
  • 湖北省

  • 孝感市
  • 湖北省

  • 宜昌市
  • 湖北省

  • 恩施土家族苗族自治州
  • 湖北省

  • 武汉市
  • 湖北省

  • 省直辖县级行政区划
  • 湖北省

  • 荆州市
  • 湖北省

  • 荆门市
  • 湖北省

  • 襄阳市
  • 湖北省

  • 鄂州市
  • 湖北省

  • 随州市
  • 湖北省

  • 黄冈市
  • 湖北省

  • 黄石市
  • 湖南省

  • 娄底市
  • 湖南省

  • 岳阳市
  • 湖南省

  • 常德市
  • 湖南省

  • 张家界市
  • 湖南省

  • 怀化市
  • 湖南省

  • 株洲市
  • 湖南省

  • 永州市
  • 湖南省

  • 湘潭市
  • 湖南省

  • 湘西土家族苗族自治州
  • 湖南省

  • 益阳市
  • 湖南省

  • 衡阳市
  • 湖南省

  • 邵阳市
  • 湖南省

  • 郴州市
  • 湖南省

  • 长沙市
  • 甘肃省

  • 临夏回族自治州
  • 甘肃省

  • 兰州市
  • 甘肃省

  • 嘉峪关市
  • 甘肃省

  • 天水市
  • 甘肃省

  • 定西市
  • 甘肃省

  • 平凉市
  • 甘肃省

  • 庆阳市
  • 甘肃省

  • 张掖市
  • 甘肃省

  • 武威市
  • 甘肃省

  • 甘南藏族自治州
  • 甘肃省

  • 白银市
  • 甘肃省

  • 酒泉市
  • 甘肃省

  • 金昌市
  • 甘肃省

  • 陇南市
  • 福建省

  • 三明市
  • 福建省

  • 南平市
  • 福建省

  • 厦门市
  • 福建省

  • 宁德市
  • 福建省

  • 泉州市
  • 福建省

  • 漳州市
  • 福建省

  • 福州市
  • 福建省

  • 莆田市
  • 福建省

  • 龙岩市
  • 西藏自治区

  • 山南市
  • 西藏自治区

  • 拉萨市
  • 西藏自治区

  • 日喀则市
  • 西藏自治区

  • 昌都市
  • 西藏自治区

  • 林芝市
  • 西藏自治区

  • 那曲市
  • 西藏自治区

  • 阿里地区
  • 贵州省

  • 六盘水市
  • 贵州省

  • 安顺市
  • 贵州省

  • 毕节市
  • 贵州省

  • 贵阳市
  • 贵州省

  • 遵义市
  • 贵州省

  • 铜仁市
  • 贵州省

  • 黔东南苗族侗族自治州
  • 贵州省

  • 黔南布依族苗族自治州
  • 贵州省

  • 黔西南布依族苗族自治州
  • 辽宁省

  • 丹东市
  • 辽宁省

  • 大连市
  • 辽宁省

  • 抚顺市
  • 辽宁省

  • 朝阳市
  • 辽宁省

  • 本溪市
  • 辽宁省

  • 沈阳市
  • 辽宁省

  • 盘锦市
  • 辽宁省

  • 营口市
  • 辽宁省

  • 葫芦岛市
  • 辽宁省

  • 辽阳市
  • 辽宁省

  • 铁岭市
  • 辽宁省

  • 锦州市
  • 辽宁省

  • 阜新市
  • 辽宁省

  • 鞍山市
  • 重庆市

  • 重庆市

  • 市辖区
  • 陕西省

  • 咸阳市
  • 陕西省

  • 商洛市
  • 陕西省

  • 安康市
  • 陕西省

  • 宝鸡市
  • 陕西省

  • 延安市
  • 陕西省

  • 榆林市
  • 陕西省

  • 汉中市
  • 陕西省

  • 渭南市
  • 陕西省

  • 西安市
  • 陕西省

  • 铜川市
  • 青海省

  • 果洛藏族自治州
  • 青海省

  • 海东市
  • 青海省

  • 海北藏族自治州
  • 青海省

  • 海南藏族自治州
  • 青海省

  • 海西蒙古族藏族自治州
  • 青海省

  • 玉树藏族自治州
  • 青海省

  • 西宁市
  • 青海省

  • 黄南藏族自治州
  • 黑龙江省

  • 七台河市
  • 黑龙江省

  • 伊春市
  • 黑龙江省

  • 佳木斯市
  • 黑龙江省

  • 双鸭山市
  • 黑龙江省

  • 哈尔滨市
  • 黑龙江省

  • 大兴安岭地区
  • 黑龙江省

  • 大庆市
  • 黑龙江省

  • 牡丹江市
  • 黑龙江省

  • 绥化市
  • 黑龙江省

  • 鸡西市
  • 黑龙江省

  • 鹤岗市
  • 黑龙江省

  • 黑河市
  • 黑龙江省

  • 齐齐哈尔市